Avoid spurious "Ignoring shutdown request" messages, fix memory leak and simplif
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Wed, 17 Aug 2005 08:26:58 +0000 (08:26 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Wed, 17 Aug 2005 08:26:58 +0000 (08:26 +0000)
y code.
Also fix whitespace.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
linux-2.6-xen-sparse/arch/xen/kernel/reboot.c

index d11eb8987a9abe8d3ca45a26639b42973bef0dc2..d2e204d12d0a90068720fbde8d3a62ad53911c37 100644 (file)
@@ -256,19 +256,23 @@ static void shutdown_handler(struct xenbus_watch *watch, const char *node)
     char *str;
 
     str = (char *)xenbus_read("control", "shutdown", NULL);
-    /* Ignore read errors and recursive shutdown events. */
-    if (IS_ERR(str) || !strcmp(str, __stringify(SHUTDOWN_INVALID)))
+    /* Ignore read errors. */
+    if (IS_ERR(str))
         return;
+    if (strlen(str) == 0) {
+        kfree(str);
+        return;
+    }
 
-    xenbus_printf("control", "shutdown", "%i", SHUTDOWN_INVALID);
+    xenbus_printf("control", "shutdown", "");
 
-    if (strcmp(str, "poweroff") == 0) {
+    if (strcmp(str, "poweroff") == 0)
         shutting_down = SHUTDOWN_POWEROFF;
-    } else if (strcmp(str, "reboot") == 0) {
+    else if (strcmp(str, "reboot") == 0)
         shutting_down = SHUTDOWN_REBOOT;
-    } else if (strcmp(str, "suspend") == 0) {
+    else if (strcmp(str, "suspend") == 0)
         shutting_down = SHUTDOWN_SUSPEND;
-    else {
+    else {
         printk("Ignoring shutdown request: %s\n", str);
         shutting_down = SHUTDOWN_INVALID;
     }